﻿using Entidad;
using Negocio;
using REAL.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Transactions;
using System.Windows.Forms;

namespace REAL
{
    public partial class frmIngresoProveedor : Form
    {
        public List<FacturaProveedorDetalle> detalle = new List<FacturaProveedorDetalle>();
        public List<RemitoProveedor> remitos = new List<RemitoProveedor>();
        public string operacion {get;set;}
        public frmIngresoProveedor(string op)
        {
            operacion = op;
            InitializeComponent();
        }

        private void frmIngresoProveedor_Load(object sender, EventArgs e)
        {
            if (operacion == "ALTA")
            {
                GetProveedores();
                GetDepositos();
                IniciarControles();
            }
            else
            {
                GetProveedores();
                GetDepositos();
                IniciarControles();

                btnBuscarFactura.Visible = true;
                ckbRemito.Enabled = false;
            }
            
        }


        private void GetDepositos()
        {
            cmbSucursal.ValueMember = "sucid";
            cmbSucursal.DisplayMember = "sucnombre";
            cmbSucursal.DataSource = Sucursales.GetTodos();
        }

        private void GetProveedores()
        {
            cmbProveedor.ValueMember = "proid";
            cmbProveedor.DisplayMember = "pronombre";
            cmbProveedor.DataSource = Proveedores.FindAll();
        }

      

        private void IniciarControles()
        {
            txtRemito.Enabled = false;         
            txtid.Visible = false;       
            txtIdIngreso.Visible = false;
            txtCosto.Enabled = false;
            txtProducto.Enabled = false;
            txtSubtotal.Enabled = false;
            txtSubtotal.Text = "0.00";
            txtIva.Text = "0.00";
            txtIngBrutos.Text = "0.00";
            txtTotal.Enabled = false;
            txtRemito.Enabled = false;
            cmbSucursal.Enabled = false;
            txtIdOrden.Visible = false;
            txtNroOrden.Visible = false;
            txtFecha.Visible = false;
            txtSucursal.Visible = false;
            txtIdSucursal.Visible = false;
            btnBuscarFactura.Visible = false;
            txtIdFactura.Visible = false;

            dgvDetalle.Columns[8].Visible = false;
            dgvDetalle.Columns[9].Visible = false;
            dgvDetalle.Columns[11].Visible = false;
        }

        private void ckbRemito_CheckedChanged(object sender, EventArgs e)
        {
          
        }

        private void btnBuscarOrden_Click(object sender, EventArgs e)
        {

            if (ckbRemito.CheckState == CheckState.Unchecked)
            {
                txtCodigo.Text = string.Empty;
                txtCosto.Text = string.Empty;
                txtProducto.Text = string.Empty;
                txtCantidad.Text = string.Empty;
                txtSucursal.Text = string.Empty;
                txtIdSucursal.Text = string.Empty;

                errorProvider1.Clear();

                dlgProducto dlg = new dlgProducto(Convert.ToInt32(cmbProveedor.SelectedValue));
                dlg.Text = "Productos - Selector de Producto";
                DialogResult result = dlg.ShowDialog();
                if (result == System.Windows.Forms.DialogResult.OK && dlg.prdid != 0)
                {
                    txtid.Text = dlg.prdid.ToString();
                    txtCodigo.Text = dlg.prdcodigo.ToString();                    
                }
            }
            else
            {
                txtCodigo.Text = string.Empty;
                txtCantidad.Text = string.Empty;
                txtNroOrden.Text = string.Empty;
                txtIdOrden.Text = string.Empty;
                txtProducto.Text = string.Empty;
                txtSucursal.Text = string.Empty;
                txtIdSucursal.Text = string.Empty;
                errorProvider1.Clear();

                dlgPendientesEntrega dlg = new dlgPendientesEntrega(Convert.ToInt32(cmbProveedor.SelectedValue));
                dlg.Text = "Compras - Selector de Productos Pendientes de Entrega";
                DialogResult result = dlg.ShowDialog();
                if (result == System.Windows.Forms.DialogResult.OK)
                {
                    txtid.Text = dlg.prdid.ToString();
                    //txtid.Text = dlg.prdid.ToString();
                    //txtCodigo.Text = dlg.prdcodigo.ToString();
                    DataTable dt = Productos.GetProductoObtenerPorId(Convert.ToInt32(txtid.Text));
                    if (dt.Rows.Count > 0)
                    {
                        if (Convert.ToInt32(dt.Rows[0]["proid"]) == Convert.ToInt32(cmbProveedor.SelectedValue))
                        {
                            txtCodigo.Text = dlg.prdcodigo.ToString();
                            txtIdOrden.Text = dlg.odcid.ToString();
                            txtNroOrden.Text = dlg.odcnumero.ToString();
                            txtFecha.Text = dlg.fecha.ToShortDateString();
                            txtSucursal.Text = dlg.deposito;
                            txtIdSucursal.Text = dlg.sucid.ToString();
                        }
                        else
                        {
                            errorProvider1.SetError(btnBuscarOrden, "El producto seleccionado no corresponde al proveedor.");                          
                        }
                    }
                    else
                    {
                        errorProvider1.SetError(btnBuscarOrden, "El producto selecccionado no es correcto.");
                    }
                }
            }
        }

        private void txtCodigo_TextChanged(object sender, EventArgs e)
        {
            if (txtCodigo.Text != string.Empty && string.IsNullOrEmpty(txtid.Text) && txtCodigo.TextLength == 6)
            {
                ObtenerProducto(Convert.ToInt32(txtCodigo.Text));
               
            }
        }

        private void ObtenerProducto(int prdid)
        {
            Producto producto = Productos.GetPorId(prdid);

            if (producto != null)
            {
                if (producto.proveedor.proid == Convert.ToInt32(cmbProveedor.SelectedValue))
                {
                    txtProducto.Text = producto.prddenominacion;

                    ObtenerCostoProducto(producto);

                    txtCosto.Text = producto.prdcosto.ToString();
                    txtCodigo.Text = producto.prdcodigo;
                    //txtMetros.Text = producto.prdmetros.ToString();
                    //txtCoeficiente.Text = (CalcularBonificaciones(producto).ToString());
                    //txtCostoNeto.Text = (CalcularBonificaciones(producto).ToString());


                }
            }
            else
            {

                errorProvider1.SetError(txtProducto, "El producto no existe registrado en el sistema.");
                txtProducto.Focus();
            }
        }


        private void ObtenerCostoProducto(Producto producto)
        {
            try
            {
                ListaPrecioProducto listaproducto = ListasPrecioProducto.GetProductoPrecioVigente(producto);
                if (listaproducto != null)
                {
                    txtCosto.Text = listaproducto.listaprecioproducto_costobruto.ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void txtid_TextChanged(object sender, EventArgs e)
        {
            if (txtid.Text != string.Empty)
            {
                ObtenerProducto(Convert.ToInt32(txtid.Text));
            }
        }

        private void ckbCosto_CheckedChanged(object sender, EventArgs e)
        {
            if(ckbCosto.CheckState == CheckState.Checked)
            {
                txtCosto.Enabled = true;
            }
            else
            {
                txtCosto.Enabled = false;
            }
        }

        private Boolean ValidarAgregar()
        {
            bool resultado = true;
            errorProvider1.Clear();

            if(string.IsNullOrEmpty(txtCodigo.Text))
            {
                resultado = false;
                errorProvider1.SetError(btnBuscarOrden, "Debe seleccionar un producto.");
                return resultado;
            }

            if (string.IsNullOrEmpty(txtCantidad.Text))
            {
                resultado = false;
                errorProvider1.SetError(txtCantidad, "Debe indicar una cantidad.");
                return resultado;
            }

            if (string.IsNullOrEmpty(txtCosto.Text))
            {
                resultado = false;
                errorProvider1.SetError(txtCosto, "Debe indicar el costo del producto.");
                return resultado;
            }

            return resultado;
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (ValidarAgregar() == true)
            {
                if (ckbRemito.CheckState == CheckState.Unchecked)
                {
                    dgvDetalle.Rows.Add(txtid.Text, txtCodigo.Text, txtProducto.Text, Convert.ToDouble(txtCosto.Text), txtCantidad.Text, (Convert.ToDouble(txtCosto.Text) * Convert.ToInt32(txtCantidad.Text)), "");
                    LimpiarControlesAgregar();
                    CalcularSubtotal();
                }
                else
                {
                    dgvDetalle.Rows.Add(txtid.Text, txtCodigo.Text, txtProducto.Text, Convert.ToDouble(txtCosto.Text), txtCantidad.Text, (Convert.ToDouble(txtCosto.Text) * Convert.ToInt32(txtCantidad.Text)), "", txtIdOrden.Text, txtNroOrden.Text, txtFecha.Text, txtIdSucursal.Text, txtSucursal.Text);
                    LimpiarControlesAgregar();
                    CalcularSubtotal();
                }
            }
        }


        private void LimpiarControlesAgregar()
        {
            txtCodigo.Text = string.Empty;
            txtCantidad.Text = string.Empty;
            txtCosto.Text = string.Empty;
            txtid.Text = string.Empty;
            txtProducto.Text = string.Empty;
            txtIdOrden.Text = string.Empty;
            txtNroOrden.Text = string.Empty;
            txtFecha.Text = string.Empty;
            txtSucursal.Text = string.Empty;
            txtIdSucursal.Text = string.Empty;
           
        }

        private void CalcularSubtotal()
        {
            double subtotal = 0;
            foreach(DataGridViewRow fila in dgvDetalle.Rows)
            {
                subtotal = subtotal + Convert.ToDouble(fila.Cells[5].Value);
            }
            txtSubtotal.Text = subtotal.ToString();
        }

        private void txtSubtotal_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtIva.Text))
            {
                if (!string.IsNullOrEmpty(txtIngBrutos.Text))
                {
                    CalcularTotal();
                }
            }
        }

        private void CalcularTotal()
        {
            double total = 0;
            total = Convert.ToDouble(txtSubtotal.Text) + Convert.ToDouble(txtIva.Text) + Convert.ToDouble(txtIngBrutos.Text);
            txtTotal.Text = total.ToString();
        }

        private void txtIva_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtSubtotal.Text))
            {
                if (!string.IsNullOrEmpty(txtIngBrutos.Text))
                {
                    CalcularTotal();
                }
            }
        }

        private void txtIngBrutos_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtSubtotal.Text))
            {
                if (!string.IsNullOrEmpty(txtIva.Text))
                {
                    CalcularTotal();
                }
            }
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnBuscarRemito_Click(object sender, EventArgs e)
        {
            frmRemitoSelector frm = new frmRemitoSelector();
            DialogResult result = frm.ShowDialog();
            if(result == System.Windows.Forms.DialogResult.OK)
            {
                List<RemitoProveedor> rems = new List<RemitoProveedor>();                
                rems = frm.remitos;
                foreach(RemitoProveedor row in rems)
                {
                    dgvRemitos.Rows.Add(row.id, row.numero, row.fechaemision.ToShortDateString(), "");
                }
            }
           
        }

        private void CrearDetalleRemitos()
        {
            remitos.Clear();
            foreach(DataGridViewRow fila in dgvRemitos.Rows)
            {
                RemitoProveedor remito = new RemitoProveedor();
                remito.id = Convert.ToInt32(fila.Cells[0].Value);
                remito.numero = fila.Cells[1].Value.ToString();
                remito.fechaemision = Convert.ToDateTime(fila.Cells[2].Value);
                remitos.Add(remito);
            }
        }


        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void btnRegistrar_Click(object sender, EventArgs e)
        {
            if (operacion == "ALTA")
            {
                if (ckbRemito.CheckState == CheckState.Unchecked)
                {
                    if (ValidarSoloFactura() == true)
                    {
                        InsertarFactura();
                    }
                }
                else
                {
                    InsertarFacturaConRemito();
                }
            }
            else
            {
                if(ValidarSoloFactura()==true)
                {
                    ModificarFactura();
                }
            }
        }


        private void CrearDetalle()
        {
            detalle.Clear();

            foreach (DataGridViewRow row in dgvDetalle.Rows)
            {
                FacturaProveedorDetalle fila = new FacturaProveedorDetalle();
                fila.fpdcantidad = Convert.ToInt32(row.Cells[4].Value);
                fila.fpdimporteunit = Convert.ToInt32(row.Cells[3].Value);
                fila.prdid = Convert.ToInt32(row.Cells[0].Value);
                fila.odcid = Convert.ToInt32(row.Cells[7].Value);
                fila.sucid = Convert.ToInt32(row.Cells[10].Value);
                if (string.IsNullOrEmpty(row.Cells[6].Value.ToString()))
                {
                    fila.fpdid = 0;
                }
                else
                {
                    fila.fpdid = Convert.ToInt32(row.Cells[6].Value);
                }

                detalle.Add(fila);
            }
        }


        private Boolean ValidarSoloFactura()
        {
            bool resultado = true;
            errorProvider1.Clear();

            if (txtFactura.MaskFull == false)
            {
                resultado = false;
                errorProvider1.SetError(txtFactura, "Debe completar el campo Nro. Factura.");
                return resultado;
            }

            if (dgvDetalle.Rows.Count == 0)
            {
                resultado = false;
                errorProvider1.SetError(btnBuscarOrden, "Deben agregar un detalle a la Factura.");
                return resultado;
            }

            if (dgvRemitos.Rows.Count == 0)
            {
                resultado = false;
                tabControl1.SelectedTab = tabControl1.TabPages[1];
                errorProvider1.SetError(btnBuscarRemito, "Debe seleccionar al menos un Remito.");
                return resultado;
            }

            if(string.IsNullOrEmpty(txtIva.Text) || txtIva.Text == "0.00")
            {
                resultado = false;
                errorProvider1.SetError(txtIva, "Debe completar el campo I.V.A.");
                return resultado;
            }

            if(string.IsNullOrEmpty(txtIngBrutos.Text) || txtIngBrutos.Text == "0.00")
            {
                resultado = false;
                errorProvider1.SetError(txtIngBrutos, "Debe completar el campo Ing. Brutos.");
                return resultado;
            }

           
            return resultado;
        }

        private void ModificarFactura()
        {
            FacturaProveedor factura = new FacturaProveedor();
            factura.activo = 1;
            factura.fecha = dtpFechaFactura.Value;
            factura.fecharecepcion = dtpFechaRecepcion.Value;
            factura.importe = Convert.ToDecimal(txtTotal.Text);
            factura.numero = txtFactura.Text;
            factura.observaciones = txtObservacion.Text;
            factura.proveedor_id = Convert.ToInt32(cmbProveedor.SelectedValue);
            factura.id = Convert.ToInt32(txtIdFactura.Text);
            factura.subtotal = Convert.ToDouble(txtSubtotal.Text);
            factura.iva = Convert.ToDouble(txtIva.Text);
            factura.ingbrutos = Convert.ToDouble(txtIngBrutos.Text);


            //ver
            factura.sucursal_id = Convert.ToInt32(cmbSucursal.SelectedValue);
            CrearDetalle();
            factura.detalle = detalle;
            CrearDetalleRemitos();
            factura.remitos = remitos;

            if (ckbAutorizada.CheckState == CheckState.Checked)
            {
                factura.autorizada = 1;
            }
            else
            {
                factura.autorizada = 0;
            }

            int resultado = FacturasProveedor.Modify(factura);
            if (resultado > 0)
            {
                MessageBox.Show("La Factura se modificó correctamente.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LimpiarControles();
            }
            else
            {
                MessageBox.Show("Ocurrio un error al modificar la Factura. Intente Nuevamente.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void InsertarFactura()
        {
            FacturaProveedor factura = new FacturaProveedor();
            factura.activo = 1;
            factura.fecha = dtpFechaFactura.Value;
            factura.fecharecepcion = dtpFechaRecepcion.Value;
            factura.importe = Convert.ToDecimal(txtTotal.Text);
            factura.numero = txtFactura.Text;
            factura.observaciones = txtObservacion.Text;
            factura.proveedor_id = Convert.ToInt32(cmbProveedor.SelectedValue);
            factura.subtotal = Convert.ToDouble(txtSubtotal.Text);
            factura.iva = Convert.ToDouble(txtIva.Text);
            factura.ingbrutos = Convert.ToDouble(txtIngBrutos.Text);

            
            //ver
            factura.sucursal_id = Convert.ToInt32(cmbSucursal.SelectedValue);
            CrearDetalle();
            factura.detalle = detalle;
            CrearDetalleRemitos();
            factura.remitos = remitos;

            if(ckbAutorizada.CheckState == CheckState.Checked)
            {
                factura.autorizada = 1;
            }
            else
            {
                factura.autorizada = 0;
            }

            int resultado = FacturasProveedor.add(factura);
            if(resultado > 0)
            {
                MessageBox.Show("La Factura se registro correctamente.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LimpiarControles();
            }
            else
            {
                MessageBox.Show("Ocurrio un error al registrar la Factura. Intente Nuevamente.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void InsertarFacturaConRemito()
        {
            //validar

            FacturaProveedor factura = new FacturaProveedor();
            factura.activo = 1;
            factura.fecha = dtpFechaFactura.Value;
            factura.fecharecepcion = dtpFechaRecepcion.Value;
            factura.importe = Convert.ToDecimal(txtTotal.Text);
            factura.numero = txtFactura.Text;
            factura.observaciones = txtObservacion.Text;
            factura.proveedor_id = Convert.ToInt32(cmbProveedor.SelectedValue);
            factura.numeroremito = txtRemito.Text;
            //ver
            factura.sucursal_id = Convert.ToInt32(cmbSucursal.SelectedValue);
            CrearDetalle();
            factura.detalle = detalle;

            if (ckbAutorizada.CheckState == CheckState.Checked)
            {
                factura.autorizada = 1;
            }
            else
            {
                factura.autorizada = 0;
            }


            int resultado = FacturasProveedor.AddConRemito(factura);
            if (resultado > 0)
            {
                MessageBox.Show("La Factura se registro correctamente.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LimpiarControles();
            }
            else
            {
                MessageBox.Show("Ocurrio un error al registrar la Factura. Intente Nuevamente.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void LimpiarControles()
        {
            txtCantidad.Text = string.Empty;
            txtCodigo.Text = string.Empty;
            txtCosto.Text = string.Empty;
            txtFactura.Text = string.Empty;
            txtFecha.Text = string.Empty;
            txtid.Text = string.Empty;
            txtIdIngreso.Text = string.Empty;
            txtIdOrden.Text = string.Empty;
            txtIdSucursal.Text = string.Empty;
            txtIngBrutos.Text = "0.00";
            txtIva.Text = "0.00";
            txtNroOrden.Text = string.Empty;
            txtObservacion.Text = string.Empty;
            txtProducto.Text = string.Empty;
            txtRemito.Text = string.Empty;
            txtSubtotal.Text = "0.00";
            txtSucursal.Text = string.Empty;
            txtTotal.Text = "0.00";
            txtIdFactura.Text = string.Empty;

            cmbProveedor.SelectedIndex = 0;
            cmbSucursal.SelectedIndex = 0;
            dgvDetalle.Rows.Clear();
            dgvRemitos.Rows.Clear();

            tabControl1.SelectedTab = tabControl1.TabPages[0];
        }

        private void dgvDetalle_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if(dgvDetalle.Columns[e.ColumnIndex].Name == "eliminar")
            {                
                DialogResult result = MessageBox.Show("Desea quitar del detalle el producto: " + dgvDetalle.CurrentRow.Cells[1].Value.ToString() + " - " + dgvDetalle.CurrentRow.Cells[2].Value.ToString() + " ?", "Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == System.Windows.Forms.DialogResult.Yes)
                {
                    if (string.IsNullOrEmpty(dgvDetalle.CurrentRow.Cells[6].Value.ToString()))
                    {
                        int fila = dgvDetalle.CurrentRow.Index;
                        dgvDetalle.Rows.RemoveAt(fila);
                        CalcularSubtotal();
                    }
                    else
                    {
                        bool resultado = FacturasProveedor.EliminarItemDetalle(Convert.ToInt32(dgvDetalle.CurrentRow.Cells[6].Value));
                        if (resultado == true)
                        {
                            int fila = dgvDetalle.CurrentRow.Index;
                            dgvDetalle.Rows.RemoveAt(fila);
                        }
                        else
                        {
                            MessageBox.Show("Ocurrio un error al quitar el item. Intente Nuevamente.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
        }

        private void ckbRemito_CheckedChanged_1(object sender, EventArgs e)
        {
            if(ckbRemito.CheckState == CheckState.Checked)
            {
                cmbSucursal.Enabled = true;
                txtRemito.Enabled = true;           
                dgvDetalle.Columns[8].Visible = true;
                dgvDetalle.Columns[9].Visible = true;
                dgvDetalle.Columns[11].Visible = true;
                btnBuscarRemito.Enabled = false;
            }
            else
            {
                cmbSucursal.Enabled = false;
                txtRemito.Enabled = false;
                dgvDetalle.Columns[8].Visible = false;
                dgvDetalle.Columns[9].Visible = false;               
                btnBuscarRemito.Enabled = true;
            }
        }

        private void btnBuscarFactura_Click(object sender, EventArgs e)
        {
            dlgIngresosProveedor dlg = new dlgIngresosProveedor();
            DialogResult result = dlg.ShowDialog();
            if (result == System.Windows.Forms.DialogResult.OK)
            {
                txtIdFactura.Text = dlg.fapid.ToString();
            }
        }

        private void txtIdFactura_TextChanged(object sender, EventArgs e)
        {
            if(!string.IsNullOrEmpty(txtIdFactura.Text))
            {
                BuscarFactura(Convert.ToInt32(txtIdFactura.Text));

            }
        }

        private void BuscarFactura(int id)
        {
            FacturaProveedor factura = FacturasProveedor.FindByIdConDetalleProveedor(id);
            txtFactura.Text = factura.numero;
            dtpFechaFactura.Value = factura.fecha;
            dtpFechaRecepcion.Value = factura.fecharecepcion;
            txtObservacion.Text = factura.observaciones;
            txtSubtotal.Text = factura.subtotal.ToString();
            txtIva.Text = factura.iva.ToString();
            txtIngBrutos.Text = factura.ingbrutos.ToString();
            txtTotal.Text = factura.importe.ToString();
            cmbProveedor.Text = factura.proveedor.pronombre;

            if(factura.autorizada == 1)
            {
                ckbAutorizada.CheckState = CheckState.Checked;
            }
            
            dgvDetalle.Rows.Clear();
            foreach(var row in factura.detalle)
            {
                dgvDetalle.Rows.Add(row.producto.prdid, row.producto.prdcodigo, row.producto.prddenominacion, row.fpdimporteunit, row.fpdcantidad,  (row.fpdcantidad * row.fpdimporteunit) , row.fpdid);
            }

            GetRemitos(id);
            CalcularSubtotal();
            
        }


        private void GetRemitos(int factura_id)
        {
            var resultado = (from row in FacturasProveedor.FindRemitosFactura(factura_id)
                             select new
                             {
                                 row.remito.id,                                
                                 row.remito.numero,
                                 row.remito.fechaemision                                 
                             }).ToList();

            dgvRemitos.Rows.Clear();
            remitos.Clear();
            foreach(var fila in resultado)
            {
                RemitoProveedor remito = new RemitoProveedor();
                remito.id = fila.id;
                remito.numero = fila.numero;
                remito.fechaemision = fila.fechaemision;
                remitos.Add(remito);

                dgvRemitos.Rows.Add(fila.id, fila.numero,fila.fechaemision.ToShortDateString(), "1" );
            }           
        }

        private void dgvRemitos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvRemitos.Columns[e.ColumnIndex].Name == "eliminarremito")
            {
                DialogResult result = MessageBox.Show("Desea quitar el remito de la factura", "Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == System.Windows.Forms.DialogResult.Yes)
                {
                    if(string.IsNullOrEmpty(dgvRemitos.CurrentRow.Cells[3].Value.ToString()))
                    {
                        int fila = dgvRemitos.CurrentRow.Index;
                        dgvRemitos.Rows.RemoveAt(fila);
                    }
                    else
                    {
                        bool resultado = FacturasProveedor.EliminarRemitoFactura(Convert.ToInt32(dgvRemitos.CurrentRow.Cells[0].Value));
                        if (resultado == true)
                        {
                            int fila = dgvRemitos.CurrentRow.Index;
                            dgvRemitos.Rows.RemoveAt(fila);
                        }
                        else
                        {
                            MessageBox.Show("Ocurrio un error al quitar el item. Intente Nuevamente.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }

            }
        }

        private void txtObservacion_TextChanged(object sender, EventArgs e)
        {

        }


    }

       

}
